/*
 * Course:    CS 590 Web Services
 * Semseter:  Spring 2009
 * Professor: Sedlemeyer
 * Project:   CHEAT (Code Help Educational Assignment Tool)
 * Due Date:  May 1, 2009
 * Team:      Sarcasm
 *            (Baker, Jason; Mitchell, Robin; Shie, Keith)
 */
package cheat.administration;

import cheat.entities.Person;
import javax.ejb.Local;

/**
 * Provides the local interface to the {@linkplain PopulationManagementBean}.
 *
 * The population manager contains the functionality related to
 * populate the operational data required to support the assignment sharing system.
 *
 * @author Keith Shie
 */
@Local
public interface PopulationManagementLocal {

  /**
   * Populate the {@linkplain cheat.entities.Person Person} operational entities.
   *
   * <p>Ideally, this method would not be part of a public API.  However, we
   * need to gain control over the transaction so that we can force the
   * persistance layer to generate the PK for the underlying License
   * Entity.  Providing this method as part of the public API is the most
   * straight forward way to gain this control.</p>
   *
   * @return the Person entity that was created.
   */
  Person populateAdminPerson();


  /**
   * Populate the {@linkplain cheat.entities.AccessType AccessType} operational entities.
   *
   * <p>Ideally, this method would not be part of a public API.  However, we
   * need to gain control over the transaction so that we can force the
   * persistance layer to write these entities into the database so they can be referenced
   * by other entities.  Providing this method as part of the public API is the most
   * straight forward way to gain this control.</p>
   *
   */
  void populateAccessTypes();


  /**
   * Populate the {@linkplain cheat.entities.StatusType StatusType} operational entities.
   *
   * <p>Ideally, this method would not be part of a public API.  However, we
   * need to gain control over the transaction so that we can force the
   * persistance layer to write these entities into the database so they can be referenced
   * by other entities.  Providing this method as part of the public API is the most
   * straight forward way to gain this control.</p>
   *
   */
  void populateStatusTypes();
    
}
